package Elementos;

import Juego.Mapeli;

public abstract class Personaje extends Elemento implements Runnable{
	private Celda arriba, abajo, derecha, izquierda;
	private Celda actual;
	private int x,y;
	
	protected Mapeli mapa;
	//private Juego game;
	
	// Obligo a que me pasen estos parametros
	protected Personaje(Mapeli m, Celda a){
		//game = g;
		super('M',a);
		mapa = m;
		actual = a;
		this.enlazarCeldas(a);
	}
	
	public void enlazarCeldas(Celda a){
		this.x = a.getPosX();
		this.y = a.getPosY();
		if(y == 0) arriba = null;
		else arriba = mapa.getCelda(x, y-1);
		if(y == 19) abajo = null;
		else abajo = mapa.getCelda(x, y+1);
		if(x == 0) izquierda = null;
		else izquierda = mapa.getCelda(x-1, y);
		if(x == 29) derecha = null;
		else derecha = mapa.getCelda(x+1, y);
	}
	
	// Consultas
	
	public Celda getArriba(){ return this.arriba; }
	
	public Celda getAbajo(){ return this.abajo; }
	
	public Celda getDerecha(){ return this.derecha; }
	
	public Celda getIzquierda(){ return this.izquierda; }
	
	public Celda getActual(){ return this.actual; }
	
	public int getPosX(){ return x; }
	
	public int getPosY(){ return y; }
	
	// Comandos
	
	public void setArriba(Celda c){ this.arriba = c; }
	
	public void setAbajo(Celda c){ this.abajo = c; }
	
	public void setDerecha(Celda c){ this.derecha = c; }
	
	public void setIzquierda(Celda c){ this.izquierda = c; }
	
	public void setActual(Celda c){ this.actual = c; }
	
	public abstract void run ();
	
	// FALTAN METODOS GRAFICOS!
}
